object ExtendTraitDemo01 {
  def main(args: Array[String]): Unit = {
    println("-----------------------")
  }
}
/**
 * 说明
 * 1. LoggedException 继承了 Exception
 * 2. LoggedException 特质就可以 Exception 功能
 */
trait LoggedException extends Exception {
  def log(): Unit = {
    // ⽅法来⾃于Exception类
    println(getMessage())
  }
}
/**
 * 因为 UnhappyException 继承了 LoggedException
 * ⽽ LoggedException 继承了 Exception
 * UnhappyException 就成为 Exception⼦类
 */
class UnhappyException extends LoggedException{
  // 已经是Exception的⼦类了，所以可以重写⽅法
  override def getMessage = "错误消息！"
}
/**
 * 如果混⼊该特质的类，已经继承了另⼀个类(A类)，则要求A类是特质超类的⼦类
 * 否则就会出现了多继承现象，发⽣错误。
 */
class UnhappyException2 extends IndexOutOfBoundsException with LoggedExcep
tion{
  // 已经是Exception的⼦类了，所以可以重写⽅法
  override def getMessage = "错误消息！"
}
class CCC {}